package com.bci.pwtz.common;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.bci.pwtz.common.util.MutiPatternParser;
import com.bci.pwtz.mysql.model.AdminMenu;
import com.bci.pwtz.mysql.model.BatchUpdate;
import com.bci.pwtz.mysql.model.BusinessRef;
import com.bci.pwtz.mysql.model.CompanyMenu;

/**
 * 
 * 参数常量
 */
public class PwtzConstants
{
    /**
     * @Fields INTERFACE_DEFAULT_PAGESIZE : 默认分页大小
     */
    public static int                     DEFAULT_PAGESIZE;
    /**
     * WEB门户
     */
    public static final int               PORTAL_TYPE_WEB        = 1;
    /**
     * 手机应用
     */
    public static final int               PORTAL_TYPE_APP        = 2;
    /**
     * 后台管理平台
     */
    public static final int               PORTAL_TYPE_SYS_ADMIN  = 3;
    /**
     * 用户管理平台
     */
    public static final int               PORTAL_TYPE_USER_ADMIN = 4;

    /**
     * 密钥
     */
    public static String                  INTERFACE_SCRECTKEY;
    /**
     * 密钥有效期（单位天）
     */
    public static int                     INVITATION_CODE_VALID;
    /**
     * 心跳有效期（单位分钟）
     */
    public static int                     TOKEN_VAILD;

    /**
     * 心跳MAP
     */
    public static final Map<String, Date> TOKEN_MAP              = new ConcurrentHashMap<String, Date>();
    
    public static ConcurrentHashMap<Short, MutiPatternParser> mutiPatternParserMap = new ConcurrentHashMap<Short, MutiPatternParser>();

    /**
     * 清理过期token任务间隔
     */
    public static int                     CLEAR_TOKEN_INTERVAL;
    /**
     * 清理过期邀请码任务间隔
     */
    public static int                     CLEAR_INVITATION_CODE_INTERVAL;
    /**
     * 中压箱式变电站自动计算配变总容量任务间隔
     */
    public static int                     AUDIT_BYQ_INTERVAL;
    
    /**
     * 过期付费公司到期状态变更任务间隔
     */
    public static int                     CLEAR_COMPANY_VIP_INTERVAL;

    /**
     * 主体业务数据关系依赖缓存数据
     */
    public static List<BusinessRef>       BUSINESS_REF_CACHE;

    /**
     * 短信验证码有效期,单位:秒
     */
    public static int                     VERIFY_CODE_VAILD;

    /**
     * 每个用户每日能获取的短信验证码最大值
     */
    public static int                     MAX_COUNT_VERIFY_CODE_DAILY;

    /**
     * 登录后COOKIE保持的有效期,单位:天
     */
    public static int                     LOGIN_COOKIE_VAILD;
    
    /**
     * 友盟APP消息使用的App Key
     */
    public static String UMENG_APP_KEY;
    
    /**
     * 友盟APP消息使用的App Secret
     */
    public static String UMENG_APP_MASTER_SECRET;
    
    /**
     * 密码KEY(盐)
     */
    public static String PASSWORD_KEY;
    
    /**
     * 系统默认的管理组的默认权限
     */
    public static String[] DEFAULT_ADMIN_ROLE_ACTION_CODES;
    
    /**
     * 系统默认的普通用户组的默认权限
     */
    public static String[] DEFAULT_USER_ROLE_ACTION_CODES;
    

    /**
     * 短信下行接口URL
     */
    public static String SMS_INTERFACE_SEND_URL;
    
    /**
     * 短信下行接口单位编号
     */
    public static String SMS_INTERFACE_CORP_ID;
    
    /**
     * 短信下行接口密码
     */
    public static String SMS_INTERFACE_PASSWORD;
    
    /**
     * 短信下行接口超时时间，单位：秒
     */
    public static int SMS_INTERFACE_TIMEOUT;
    
    /**
     * 用户申请加入公司的最大等待时间，单位：天
     */
    public static int AUDIT_VALID;
    
    /**
     * 清理用户申请加入公司数据的线程处理时间，单位：分钟
     */
    public static int CLEAR_AUDIT_INTERVAL;
    
    /**
     * 用户最大可创建单位数
     */
    public static int MAX_CREATE_COMPANY_COUNT;
    
    /**
     * 用户最大可加入单位数
     */
    public static int MAX_JOIN_COMPANY_COUNT;
    
    /**
     * 配网数据菜单
     */
    public static List<CompanyMenu> COMPANY_MENU;
    /**
     * 运维管理菜单
     */
    public static List<AdminMenu> ADMIN_MENU;
    
    public static Map<String, String> PROVINCE_MAP             = new HashMap<String, String>();
    
    public static Map<String, String> CITY_MAP              = new HashMap<String, String>();
    
    public static Map<String, String> COUNTRY_MAP              = new HashMap<String, String>();
    
    /**
     * 重新修改密码成功后，新密码的下发短信内容
     */
    public static String MODIFIED_PASSWORD_MSG;
    
    public static String GET_REGISTER_CODE_MSG;
    
    public static String GET_FORGET_PASSWORD_CODE_MSG;
    
    public static String GET_SWITCH_TEL_CODE_MSG;
    
    public static String JOIN_COMPANY_MSG;
    
    public static String ADD_USER_SEND_PASSWORD_MSG;
    
    public static String AUDIT_SUCCESS_MSG;
    
    public static Map<Long,String> DEVICE_TYPE_MAP = new HashMap<Long, String>();
    
    public static final String DAOUBLE_REG = "\\d+([.]\\d+)?";
    
    public static Map<String, List<BatchUpdate>> BATCH_UPDATE= new HashMap<String, List<BatchUpdate>>();
    
    public static Map<Long,String> DICTIONARY_TYPE =  new HashMap<Long, String>();
    
    public static String VDYSTAT_TEMPLATE;
    
    public static String VZYSTAT_TEMPLATE;
    
    public static int THE_TRIAL_USERS_COUNT;
    
    public static int THE_TRIAL_TOWERS_COUNT;
    
    public static String WEB_REAL_PATH;
    
    public static int THE_SERVER_TYPE;
    
    public static int THREAD_SLEEP_TIME;
}
